package com.niit.chat.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.niit.chat.common.Result;
import com.niit.chat.entity.Message;

import java.util.List;

/**
 * 消息服务接口
 * 提供消息相关的业务操作
 */
public interface MessageService extends IService<Message> {
    
    /**
     * 发送消息
     * 
     * @param message 消息对象，包含发送者ID、接收者ID、消息内容等信息
     * @return 发送是否成功
     */
    boolean sendMessage(Message message);
    
    /**
     * 获取与指定用户的聊天历史记录
     * 
     * @param userId 当前用户ID
     * @param targetUserId 目标用户ID
     * @param page 页码，从1开始
     * @param size 每页大小
     * @return 消息列表，按时间倒序排列
     */
    List<Message> getChatHistory(Long userId, Long targetUserId, Integer page, Integer size);
    
    /**
     * 获取用户的未读消息数量
     * 
     * @param userId 用户ID
     * @return 未读消息数量
     */
    Integer getUnreadCount(Long userId);
    
    /**
     * 将指定消息标记为已读
     * 
     * @param messageIds 需要标记为已读的消息ID列表
     * @return 标记是否成功
     */
    boolean markAsRead(List<Long> messageIds);

    /**
     * 撤回消息（2分钟内）
     */
    Result<Boolean> recallMessage(Long messageId, Long userId);

    /**
     * 删除消息（单方删除）
     */
    boolean deleteMessage(Long messageId, Long userId);
} 